//
// Created by 李传智 on 2018/4/14.
//

#ifndef ANDSDK_IAUDIOPLAY_H
#define ANDSDK_IAUDIOPLAY_H


#include "IObserver.h"
#include "CodecParameter.h"
#include <list>
#include <mutex>

class IAudioPlay : public IObserver {

public:
    virtual void update(VideoData data);

    virtual bool startPlay(CodecParameter out) = 0;

    virtual void close() = 0;

    // 获取缓冲队列的数据，如果没有将阻塞
    virtual VideoData getVideoData();

    // 最大缓冲队列的长度，如果队列满后，会阻塞调用线程
    int maxFrameSize = 100;

    virtual void clear();

    // pts
    int64_t pts;

protected:
    std::list<VideoData> frames;

    std::mutex frameMutex;
};


#endif //ANDSDK_IAUDIOPLAY_H
